package com.eusun.design.adapter;

/**
 * 对象适配器模式
 * 基本思路和类的适配器模式相同，只是将 Adapter 类作修改，不是继承被适配 类，
 * 而是持有 被适配 类的实例，以解决兼容性的问题。根据“ 合成复用原则”，
 * 在系统中尽量使用 关联关系（聚合）来替代继承关系。对象适配器模式是适配器模式常用的一种。
 */
public class VoltageObjAdapter implements IVoltage5V {

    private String voltage;
    private Voltage220V voltage220V;

    public VoltageObjAdapter(String voltage, Voltage220V voltage220V) {
        this.voltage = voltage;
        this.voltage220V = voltage220V;
    }

    @Override
    public void output5V() {
        // 可扩展方法output220V，而不修改output220V的源码
        System.out.println("调用5V...");
        if ("220".equals(voltage)) {
            voltage220V.output220V();
        }
    }
}
